import os
import zipfile
import argparse

def compress_folders_to_zip(root_dir):
    """
    遍历root_dir目录下的所有子目录，并将每个子目录压缩为一个ZIP文件。
    压缩级别设置为存储级（无压缩）。
    
    :param root_dir: 根目录路径
    """
    # 遍历根目录下的所有项目
    for item in os.listdir(root_dir):
        item_path = os.path.join(root_dir, item)
        
        # 检查是否是目录
        if os.path.isdir(item_path):
            # 创建ZIP文件名
            zip_filename = f"{item}.zip"
            zip_filepath = os.path.join(root_dir, zip_filename)
            
            print(f"正在压缩 {item_path} 到 {zip_filepath}")
            
            # 创建ZIP文件
            with zipfile.ZipFile(zip_filepath, 'w', compression=zipfile.ZIP_STORED) as zipf:
                # 遍历目录及其所有子目录下的文件
                for dirpath, _, filenames in os.walk(item_path):
                    for filename in filenames:
                        file_path = os.path.join(dirpath, filename)
                        # 在ZIP文件中保存的相对路径
                        arcname = os.path.relpath(file_path, start=root_dir)
                        zipf.write(file_path, arcname)
            
            print(f"完成压缩 {zip_filename}")

# # 使用函数
# root_dir = "D:\temp\photo_tmp"

# compress_folders_to_zip(root_dir)


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='unzip file')
    parser.add_argument('--src', type=str, default='D:\\temp\\', help='pick video from src folder')

    args = parser.parse_args()

    src_base_folder = args.src
    # 调用函数执行操作
    compress_folders_to_zip(src_base_folder)


